package agencia.test;

import static org.junit.Assert.*;

import java.util.Collection;
import java.util.Date;
import java.util.LinkedList;

import org.junit.Before;
import org.junit.Test;

import agencia.Hotel;
import agencia.ReservaHotelPaquete;
import agencia.PaqueteEstandar;
import agencia.ReservaDePaquete;
import com.agencia.ws.cliente.Pasajero;
import agencia.Temporada;
import agencia.exceptions.LugarInsuficienteException;

public class ReservarPaquete {
	PaqueteEstandar paqueteEstandar;
	ReservaDePaquete reservaPaquete;	
	Pasajero pasajero1;
	Pasajero pasajero2;
	Collection<Pasajero> pasajeros;
	
	//Genera una reserva y verifica la correcta determinacion del precio total y de la reserva
	@Before 
	public void setUp() throws Exception {
		paqueteEstandar = new PaqueteEstandar();
		Date fechaSalida = new Date(2008/12/01);
		Hotel hotel = new Hotel("Sheraton", "San Juan 3276", "Argentina", "CABA", "4444-5555", 5);
		ReservaHotelPaquete hotelPaquete = new ReservaHotelPaquete();
		paqueteEstandar.determinarCategoria(5);
		paqueteEstandar.determinarCantidadPasajerosMinima(10);
		paqueteEstandar.SetCantidadPasajerosMaxima(100);
		paqueteEstandar.determinarFecha(fechaSalida);
		paqueteEstandar.determinarTemporada(Temporada.Alta);
		
		hotelPaquete.determinarHotel(hotel);
		hotelPaquete.determinarFechaCheckIn(fechaSalida);
		hotelPaquete.determinarFechaCheckOut(new Date(2008/12/10));
		paqueteEstandar.agregarHotelPaquete(hotelPaquete);
		
		pasajero1 = new Pasajero();
		pasajero2 = new Pasajero();
		pasajeros = new LinkedList<Pasajero>();
		pasajeros.add(pasajero1);
		pasajeros.add(pasajero2);
	}
	
	@Test //(expected=LugarInsuficienteException.class)
	public void testReservarPaqueteStandard() throws LugarInsuficienteException {
		reservaPaquete = new ReservaDePaquete(paqueteEstandar,pasajeros);
		
		double reserva = reservaPaquete.getCostoReserva();
		double precio = reservaPaquete.getPrecioTotal();
		reservaPaquete.ConfirmarReserva(1);
		
		assertEquals(reserva, paqueteEstandar.determinarPrecio() * 2 * 0.3);
		assertEquals(precio, paqueteEstandar.determinarPrecio() * 2);
		
		
	}
}
